package com.mmaingenieria.MMAGestor.MySQL;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.mmaingenieria.MMAGestor.beans.Usuario;
import com.mmaingenieria.MMAGestor.database.MySQLDAOFactory;
import com.mmaingenieria.MMAGestor.interfaces.InterfaceUsuarioDAO;

public class MySQLUsuarioDAO implements InterfaceUsuarioDAO{
	//Construtor
    //*************************************************************************
    public MySQLUsuarioDAO() {
       
    }
    
    
    //Metodos que hay que implementar por extender de InterfaceUsuario
    //*************************************************************************
        
    //coger un usuario por nombre y pass (para verificar Login)
	public Usuario getUsuarioByUserAndPass(String _usuario, String _password) throws Exception{
		Connection conexion = null;
        String sql = "SELECT usuario_id, usuario, password, nombre, apellido1, apellido2, nif, email, rol, estado, cliente_id, observaciones, created_by, date_created, modified_by, last_update FROM mmagestor.usuario WHERE usuario=? and password =?";      
        Usuario usuario = null;
        try {
            conexion = MySQLDAOFactory.conectar();         
            PreparedStatement stmt = conexion.prepareStatement(sql);//preparas la query
            stmt.setString(1,_usuario); //le pasamos el primer parametro
            stmt.setString(2, _password);//le pasamos el segundo parametro
            ResultSet resultadoQuery = stmt.executeQuery();//realizas la query                   
            while (resultadoQuery.next()) {//recorres el resultado
            	usuario =instanciarUsuarioSesion(resultadoQuery);//
            } 
        } catch (Exception e) {
        		throw e;
        } finally {
            MySQLDAOFactory.desconectar(conexion);
        }
        return usuario;
	}
    

    
    
    //Metodos Varios
    //*************************************************************************
    private Usuario instanciarUsuario (ResultSet rs) {
    	Usuario u = new Usuario();
    	try {
            u.setId(rs.getInt("usuario_id"));
            u.setUsuario(rs.getString("usuario"));
            u.setPassword(rs.getString("password"));
            u.setNombre(rs.getString("nombre"));
            u.setApellido1(rs.getString("apellido1"));
            u.setApellido2(rs.getString("apellido2"));
            u.setNif(rs.getString("nif"));
            u.setEmail(rs.getString("email"));
            u.setRol(rs.getInt("rol"));
            u.setEstado(rs.getInt("estado"));
            u.setClienteId(rs.getInt("cliente_id"));
            u.setObservaciones(rs.getString("observaciones"));
            u.setCreatedBy(rs.getInt("created_by"));
            u.setDateCreated(rs.getTimestamp("date_created"));
            u.setModifiedBy(rs.getInt("modified_by"));
            u.setLastUpdate(rs.getTimestamp("last_update"));            
        } catch (SQLException ex) {
        }
        return u;
    }

    private Usuario instanciarUsuarioSesion (ResultSet rs){
    	Usuario u = new Usuario();
        try { 
            u.setId(rs.getInt("usuario_id"));
            u.setNombre(rs.getString("nombre"));
            u.setRol(rs.getInt("rol"));
            u.setEstado(rs.getInt("estado"));            
        } catch (SQLException ex) {
        }
        return u;   	
    }
}
